<?php

/**
 * Classe représentant un thème.
 * @author LESAGE Alexandre
 * @since 25 septembre 2013
 * @version 1.0
 */

class Theme
{
		/* Attributs */
	/**
	 * Identifiant du thème
	 * @var int
	 */
	private $_id;
	/**
	 * Libellé du thème.
	 * @var string
	 */
	private $_libelle;

		/* Constructeurs & Destructeurs */
	public function __construct()
	{
		$args = func_get_args();
		
		switch(func_num_args())
		{
			case 1 : 
				if(is_numeric($args[0]))
					$this->set_id($args[0]);
				else
					$this->set_libelle($args[0]);
				break;
			case 2 : // CODE_THEME, LIBELLE_THEME
				$this->set_id($args[0]);
				$this->set_libelle($args[1]);
				break;
		}
	}

	/* Méthodes BDD*/
	
	public static function getAllTheme()
	{
		$theme = false;
		
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(REQ_ALL_THEME.' ORDER BY 2'); // On lance la requête
		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif
		
		foreach($donnees as $d)
		{
			$theme[] = new Theme($d[CODE_THEME], $d[LIBELLE_THEME]);
		}
		return $theme;
	}
	
	public function getOneTheme()
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	REQ_ALL_THEME.'
					WHERE '.CODE_THEME.' = \''.$this->get_id().'\'');
				
		$d = $donnees->fetch();
	
		$this->set_libelle($d[LIBELLE_THEME]);
	}
	
	public function saveOneTheme()
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('INSERT INTO '.TABLE_THEME.'('.LIBELLE_THEME.')
									VALUES("'.$this->get_libelle().'")');
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public function modifOneTheme()
	{
		$bdd = PDO2::getInstance();
		$result= $bdd->exec(
				'UPDATE '.TABLE_THEME.'
				SET '.LIBELLE_THEME.' = "'.$this->get_libelle().'"
				WHERE '.CODE_THEME.' = '.$this->get_id());
	
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public function delOneTheme()
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec(
				'DELETE FROM '.TABLE_THEME.
				' WHERE '.CODE_THEME." = ".$this->get_id());
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public static function theme_exist($libelle)
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'
								SELECT *
								FROM '.TABLE_THEME.'
								WHERE '.LIBELLE_THEME.' = \''.$libelle.'\'
								');
		if($donnees->rowCount() == 1)
			return true;
		else
			return false;
	}

	/* Getteurs & Setteurs */
	/**
	 * Fonction permettant de récupérer l'identifiant du thème.
	 * @access public
	 * @return int
	 */
	public function get_id()
	{
		return $this->_id;
	}
	
	/**
	 * Fonction permettant de modifier l'identifiant du theme
	 * @access public
	 * @param int
	 */
	public function set_id($id)
	{
		$this->_id = $id;
	}

	/**
	 * Fonction permettant de récupérer le libellé du thème.
	 * @access public
	 * @return string $_libelle
	 */
	public function get_libelle()
	{
		return $this->_libelle;
	}

	/**
	 * Met à jour le libellé du thème.
	 * @access public
	 * @param string $mdp Le nouveau libellé.
	 */
	public function set_libelle($l)
	{
		if(empty($l)) // Si $l est vide, on afficher un message d'erreur.
			trigger_error('Le libellé ne peut pas être vide.');
		else
			$this->_libelle = $l;
	}
}
?>